home *** CD-ROM | disk | FTP | other *** search
/ MacWorld Secrets (4th Edition) / Mac Secrets CD 4th Ed.toast / Apple Advanced Technologies / Apple Speech Technologies 1.5 / PlainTalk Developer Info / Speech Synthesis Manager SDK / Interfaces / Speech.p < prev    next >
Text File  |  1994-05-05  |  8KB  |  285 lines

  1. {
  2.     File:        Speech.p
  3.  
  4.     Copyright:    © 1993-1994 by Apple Computer, Inc., all rights reserved.
  5. }
  6.  
  7.  
  8. Unit Speech;
  9. Interface
  10.  
  11. Uses
  12.     MemTypes,
  13.     OSIntf,
  14.     ToolIntf,
  15.     SysEqu,
  16.     Components;
  17.  
  18.  
  19. CONST
  20.  
  21.     gestaltSpeechAttr = 'ttsc';        { Gestalt Manager selector for Speech Attributes }
  22.     gestaltSpeechMgrPresent = 0;    { Gestalt bit which indicates that Speech Manager exists }
  23.  
  24.  
  25. kTextToSpeechSynthType         = 'ttsc';    { Text-to-Speech Synthesizer component type     }
  26. kTextToSpeechVoiceType         = 'ttvd';    { Text-to-Speech Voice resource type             }
  27. kTextToSpeechVoiceFileType     = 'ttvf';    { Text-to-Speech Voice file type                 }
  28. kTextToSpeechVoiceBundleType = 'ttvb';    { Text-to-Speech Voice Bundle file type            }
  29.  
  30.     { Speech Manager error codes (Range from 240 - 259) }
  31.     
  32.     noSynthFound         = -240;
  33.     synthOpenFailed     = -241;
  34.     synthNotReady        = -242;
  35.     bufTooSmall         = -243;
  36.     voiceNotFound        = -244;
  37.     incompatibleVoice    = -245;
  38.     badDictFormat         = -246;
  39.     badInputText         = -247;
  40.         
  41.     { constants for SpeakBuffer and TextDone callback controlFlags bits }
  42.     
  43.     kNoEndingProsody     = 1;
  44.     kNoSpeechInterrupt     = 2;
  45.     kPreflightThenPause    = 4;    
  46.     
  47.     
  48.     { constants for StopSpeechAt and PauseSpeechAt }
  49.     
  50.     kImmediate        = 0;
  51.     kEndOfWord        = 1;
  52.     kEndOfSentence    = 2;
  53.     
  54.     
  55.     
  56.     { GetSpeechInfo & SetSpeechInfo selectors }
  57.     
  58.     soStatus                = 'stat';
  59.     soErrors                = 'erro';
  60.     soInputMode                = 'inpt';
  61.     soCharacterMode            = 'char';
  62.     soNumberMode            = 'nmbr';
  63.     soRate                    = 'rate';
  64.     soPitchBase                = 'pbas';
  65.     soPitchMod                = 'pmod';
  66.     soVolume                = 'volm';
  67.     soSynthType                = 'vers';
  68.     soRecentSync            = 'sync';
  69.     soPhonemeSymbols        = 'phsy';
  70.     soCurrentVoice            = 'cvox';
  71.     soCommandDelimiter        = 'dlim';
  72.     soReset                    = 'rset';
  73.     soCurrentA5                = 'myA5';
  74.     soRefCon                = 'refc';
  75.     soTextDoneCallBack        = 'tdcb';
  76.     soSpeechDoneCallBack    = 'sdcb';
  77.     soSyncCallBack            = 'sycb';
  78.     soErrorCallBack            = 'ercb';
  79.     soPhonemeCallBack        = 'phcb';
  80.     soWordCallBack            = 'wdcb';
  81.     soSynthExtension        = 'xtnd';
  82.  
  83.  
  84.     { Speaking Mode Constants }
  85.  
  86.     modeText        = 'TEXT';        { input mode constants     }
  87.     modePhonemes    = 'PHON';
  88.     modeNormal        = 'NORM';        { character mode and number mode constants }
  89.     modeLiteral        = 'LTRL';
  90.  
  91.     { GetVoiceInfo selectors }
  92.     
  93.     soVoiceDescription    = 'info';    { gets basic voice info }
  94.     soVoiceFile            = 'fref';    { gets voice file ref info }
  95.  
  96.  
  97.     kNeuter     = 0;
  98.     kMale        = 1;
  99.     kFemale        = 2;
  100.  
  101.  
  102.  
  103.  
  104. TYPE
  105.  
  106.     SpeechChannelRecord = Longint;
  107.     SpeechChannel = ^SpeechChannelRecord;
  108.     SpeechChannelPtr = ^SpeechChannel;
  109.  
  110.  
  111.     VoiceSpec =
  112.         RECORD
  113.             creator:    OSType;            { creator id of required synthesizer     }
  114.             id:            OSType;            { voice id on the specified synth         }
  115.         END;
  116.     VoiceSpecPtr = ^VoiceSpec;
  117.  
  118.  
  119.     VoiceDescription =
  120.         RECORD
  121.             length:        Longint;                { size of structure - set by application     }
  122.             voice:        VoiceSpec;                { voice creator and id info             }
  123.             version:    Longint;                { version code for voice                 }
  124.             name:        Str63;                    { name of voice                         }
  125.             comment:    Str255;                    { additional text info about voice         }
  126.             gender:        Integer;                { neuter, male, or female                }
  127.             age:        Integer;                { approximate age in years                 }
  128.             script:        Integer;                { script code of text voice can process }
  129.             language:    Integer;                { language code of voice output speech     }
  130.             region:        Integer;                { region code of voice output speech     }
  131.             reserved1:    Longint;                { always zero - reserved for future use    }
  132.             reserved2:    Longint;                { always zero - reserved for future use    }
  133.             reserved3:    Longint;                { always zero - reserved for future use    }
  134.             reserved4:    Longint;                { always zero - reserved for future use    }
  135.         END;
  136.     VoiceDescriptionPtr = ^VoiceDescription;
  137.  
  138.     VoiceFileInfo =
  139.         RECORD
  140.             fileSpec:    FSSpec;                    { volume, dir, & name information for voice file }
  141.             resID:        Integer;                { resource id of voice in the file }
  142.         END;
  143.     VoiceFileInfoPtr = ^VoiceFileInfo;
  144.  
  145.  
  146.  
  147.     SpeechStatusInfo = 
  148.         RECORD
  149.             outputBusy:        Boolean; { TRUE if audio is playing}
  150.             outputPaused:    Boolean; { TRUE if channel is paused}
  151.             inputBytesLeft:    Longint; { bytes of input left to process}
  152.             phonemeCode:    Integer; { code for current phoneme}
  153.         END;
  154.     SpeechStatusInfoPtr = ^SpeechStatusInfo;
  155.     
  156.     
  157.     
  158.     
  159.     SpeechModeInfo = 
  160.         RECORD
  161.             inputMode:        OSType;    {'TEXT' or 'PHON'}
  162.             characterMode:    OSType;    {'NORM' or 'LTRL'}
  163.             numberMode:        OSType;    {'NORM' or 'LTRL'}
  164.  
  165.         END;
  166.     SpeechModeInfoPtr = ^SpeechModeInfo;
  167.     
  168.     
  169.     SpeechVersionInfo = 
  170.         RECORD
  171.             synthType:            OSType;            { always ‘ttsc’ }
  172.             synthSubType:        OSType;            { Flavor of synth }
  173.             synthManufacturer:    OSType;            { synth creator ID }
  174.             synthFlags:            Longint;        { synth feature flags }
  175.             synthVersion:        NumVersion;     { synth version number }
  176.         END;
  177.     SpeechVersionInfoPtr = ^SpeechVersionInfo;
  178.     
  179.     
  180.     TYPE speechXtndData = 
  181.         RECORD
  182.             synthCreator:    OSType;                        {synthesizer ID selector}
  183.             synthData:        PACKED ARRAY [0..1] of Char;{ data bytes TBD by synthesizer }
  184.         END;
  185.     
  186.     DelimiterInfo =
  187.         RECORD
  188.             startDelimiter:    PACKED ARRAY [0..1] of Char;
  189.             endDelimiter:    PACKED ARRAY [0..1] of Char;
  190.         END;
  191.     
  192.  
  193.     SpeechErrorInfo =
  194.         RECORD
  195.             count:        Integer;            { # of errs since last check         }
  196.             oldest:        OSErr;                { oldest unread error                 }
  197.             oldPos:        Longint;            { char position of oldest err         }
  198.             newest:        OSErr;                { most recent error                 }
  199.             newPos:        Longint;            { char position of newest err         }
  200.         END;
  201.  
  202.  
  203.     PhonemeInfo =
  204.         RECORD
  205.             opcode:            Integer;        { opcode for the phoneme             }
  206.             phStr:            Str15;            { corresponding char string         }
  207.             exampleStr:        Str31;            { word that shows use of phoneme     }
  208.             hiliteStart:    Integer;        { segment of example word that         }
  209.             hiliteEnd:        Integer;        { should be hilighted (ala TextEdit) }
  210.         END;
  211.  
  212.     PhonemeDescriptor =
  213.         RECORD
  214.             phonemeCount:    Integer;                         { # of elements     }
  215.             thePhonemes:    ARRAY [0..0] of PhonemeInfo;     { element list         }
  216.         END;
  217.  
  218.  
  219.  
  220. FUNCTION  SpeechManagerVersion: NumVersion;
  221.     INLINE $203C,$0000,$000C,$A800;
  222.  
  223. FUNCTION  MakeVoiceSpec ( creator: OSType; id: OSType; voice: VoiceSpecPtr): OSErr;
  224.     INLINE $203C, $0604, $000C, $A800;
  225. FUNCTION CountVoices (VAR numVoices: Integer): OSErr;
  226.     INLINE $203C, $0108, $000C, $A800;
  227. FUNCTION GetIndVoice (index: Integer; voice: VoiceSpecPtr): OSErr;
  228.     INLINE $203C, $030C, $000C, $A800;
  229. FUNCTION GetVoiceDescription (voice: VoiceSpecPtr; info: VoiceDescriptionPtr; infoLength: Longint): OSErr;
  230.     INLINE $203C, $0610, $000C, $A800;
  231. FUNCTION GetVoiceInfo (voice: VoiceSpecPtr; selector: OSType; voiceInfo: Ptr): OSErr;
  232.     INLINE $203C, $0614, $000C, $A800;
  233.  
  234. FUNCTION StopSpeech (chan: SpeechChannel): OSErr;
  235.     INLINE $203C, $022C, $000C, $A800;
  236.  
  237. FUNCTION SetSpeechRate (chan: SpeechChannel; rate: Fixed): OSErr;
  238.     INLINE $203C, $0444, $000C, $A800;
  239. FUNCTION GetSpeechRate (chan: SpeechChannel; rate: FixedPtr): OSErr;
  240.     INLINE $203C, $0448, $000C, $A800;
  241. FUNCTION SetSpeechPitch (chan: SpeechChannel; pitch: Fixed): OSErr;
  242.     INLINE $203C, $044C, $000C, $A800;
  243. FUNCTION GetSpeechPitch (chan: SpeechChannel; pitch: FixedPtr): OSErr;
  244.     INLINE $203C, $0450, $000C, $A800;
  245.  
  246. FUNCTION UseDictionary (chan: SpeechChannel; dictionary: Handle): OSErr;
  247.     INLINE $203C, $0460, $000C, $A800;
  248.     
  249.  
  250.     
  251. FUNCTION  NewSpeechChannel( voice: VoiceSpecPtr; VAR chan: SpeechChannel): OSErr;
  252.     INLINE $203C, $0418, $000C,$A800;
  253. FUNCTION  DisposeSpeechChannel( chan: SpeechChannel): OSErr;
  254.     INLINE $203C, $021C, $000C,$A800;
  255.  
  256. FUNCTION  SpeakString( s: Str255): OSErr;
  257.     INLINE $203C, $0220, $000C,$A800;
  258. FUNCTION  SpeakText( chan: SpeechChannel; textBuf: Ptr; byteLen: LongInt): OSErr;
  259.     INLINE $203C, $0624, $000C,$A800;
  260. FUNCTION  SpeakBuffer( chan: SpeechChannel; textBuf: Ptr; byteLen: LongInt; controlFlags: LongInt ): OSErr;
  261.     INLINE $203C, $0828, $000C,$A800;
  262.  
  263. FUNCTION  StopSpeechAt (chan: SpeechChannel; whereToStop: LongInt) : OSErr;
  264.     INLINE $203C, $0430, $000C,$A800;
  265. FUNCTION  PauseSpeechAt (chan: SpeechChannel; whereToPause: LongInt) : OSErr;
  266.     INLINE $203C, $0434, $000C,$A800;
  267. FUNCTION  ContinueSpeech (chan: SpeechChannel) : OSErr;
  268.     INLINE $203C, $0238, $000C,$A800;
  269.  
  270. FUNCTION  SpeechBusy: Integer;
  271.     INLINE $203C, $003C, $000C,$A800;
  272. FUNCTION  SpeechBusySystemWide: Integer;
  273.     INLINE $203C, $0040, $000C,$A800;
  274.  
  275. FUNCTION  GetSpeechInfo (chan: SpeechChannel; selector: OSType; speechInfo: Ptr) : OSErr;
  276.     INLINE $203C, $0658, $000C,$A800;
  277. FUNCTION  SetSpeechInfo (chan: SpeechChannel; selector: OSType; speechInfo: Ptr) : OSErr;
  278.     INLINE $203C, $0654, $000C,$A800;
  279.  
  280. FUNCTION  TextToPhonemes (chan: SpeechChannel; textBuf: Ptr; textBytes: LongInt; phonemeBuf: Handle; phonemeBytes: LongIntPtr) : OSErr;
  281.     INLINE $203C, $0A5C, $000C,$A800;
  282.  
  283. END.
  284.  
  285.